70ecf1
@@ -1038,7 +1038,15 @@
public class HTable implements HTableInterface {
           regionMutationBuilder.setAtomic(true);
           MultiRequest request =
             MultiRequest.newBuilder().addRegionAction(regionMutationBuilder.build()).build();
-          getStub().multi(controller, request);
+          ClientProtos.MultiResponse response = getStub().multi(controller, request);
+          ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);
+          if (res.hasException()) {
+            Throwable ex = ProtobufUtil.toException(res.getException());
+            if(ex instanceof IOException) {
+              throw (IOException)ex;
+            }
+            throw new IOException("Failed to mutate row: "+Bytes.toStringBinary(rm.getRow()), ex);
+          }
         } catch (ServiceException se) {
           throw ProtobufUtil.getRemoteException(se);
         }
@@ -1317,6 +1325,15 @@
public class HTable implements HTableInterface {
                   getLocation().getRegionInfo().getRegionName(), row, family, qualifier,
                   new BinaryComparator(value), compareType, rm);
               ClientProtos.MultiResponse response = getStub().multi(controller, request);
+              ClientProtos.RegionActionResult res = response.getRegionActionResultList().get(0);
+              if (res.hasException()) {
+                Throwable ex = ProtobufUtil.toException(res.getException());
+                if(ex instanceof IOException) {
+                  throw (IOException)ex;
+                }
+                throw new IOException("Failed to checkAndMutate row: "+
+                    Bytes.toStringBinary(rm.getRow()), ex);
+              }
               return Boolean.valueOf(response.getProcessed());
             } catch (ServiceException se) {
               throw ProtobufUtil.getRemoteException(se);
